package cron

import (
	"github.com/robfig/cron/v3"
)

var c *cron.Cron

type globalCron struct {
	c *cron.Cron
}

func New() Interface {
	// 初始化秒级定时器
	secondParser := cron.NewParser(cron.Second | cron.Minute |
		cron.Hour | cron.Dom | cron.Month | cron.DowOptional | cron.Descriptor)
	c = cron.New(cron.WithParser(secondParser), cron.WithChain())
	return &globalCron{
		c: c,
	}
}

func (g *globalCron) Load(load Load) Interface {
	for _, v := range load.Fun {
		g.c.AddFunc(v.to(v.Set...), v.Action)
	}
	return g
}

func (g *globalCron) Start() {
	g.c.Start()
}
